<?php
  //绘制验证码

  //将页面输出类型改为图片格式
  header("Content-Type:image/png");


    //画图像  imagecreatetruecolor(高度,宽度)  返回图像资源
    $im=imagecreatetruecolor(120, 30);

    //给图片填充背景颜色 imagecolorallocate(图像资源,红,绿,蓝) 返回颜色资源类型
    $bgcolor=imagecolorallocate($im, 255, 255, 255);

    //画背景并给背景添加颜色 imagefilledrectangle(图像资源,左上x的坐标(通常给0),左上y的坐标(通常给0),右下x的坐标(通常给图像的宽度),右下y的坐标(通常给图像的高度),颜色资源)
    imagefilledrectangle($im, 0, 0, 120, 30, $bgcolor);

    //画点
    for ($i=0;$i<500;$i++) {
        $d_color=imagecolorallocate($im,mt_rand(0, 255),mt_rand(0, 255),mt_rand(0, 255));//颜色随机
        //imagesetpixel(图像资源, x的坐标,y的坐标, 颜色资源)
        imagesetpixel($im, mt_rand(10, 120), mt_rand(10, 120), $d_color);//mt_rand(10, 200)坐标随机
    }

    //画线
     for ($i=0;$i<20;$i++) {
        $l_color=imagecolorallocate($im,mt_rand(0, 255),mt_rand(0, 255),mt_rand(0, 255));
        //imagearc(图像资源,x的坐标,y的坐标,右下x的坐标(通常给图像的宽度),右下y的坐标(通常给图像的高度),起始角度(表示绘制的角度起始位置),结束角度,颜色资源)
        imagearc($im, mt_rand(10, 120), mt_rand(10, 120), mt_rand(0, 120), mt_rand(0, 30), mt_rand(-180, 180), mt_rand(-180, 180), $l_color);
    }

    //定义填充的内容   一般不加数字0，因为0跟o难以分辨
      $str='123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';

     for ($i=0; $i <=4 ; $i++) {
        $j=mt_rand(0,strlen($str)-1);//随机范围在填充内容的长度之间
        $font=$str[$j];//获取对应下标的字符

        $_SESSION['code'].$font;//将验证码存储到session中

        $font_color=imagecolorallocate($im,mt_rand(0, 255),mt_rand(0, 255),mt_rand(0, 255));

        //imagefttext(图像资源,尺寸,角度,x坐标,y坐标,字体颜色,字体文件,字符)
        imagefttext($im,18,0,20*$i,mt_rand(15, 20),$font_color,'C:/Windows/Fonts/simsun.ttc',$font);
     }


    ob_clean();//清除缓存
    //生成图片，类型为png image后缀名可以改变
   imagepng($im);

   //销毁图片
   imagedestroy($im);


  ?>